<?php

namespace app\common\service;

use app\common\model\LotteryActivity;
use app\common\service\Service;
use app\common\util\Result;

class LotteryActivityService extends Service
{
    /**
     *  获取活动分页列表
     * @param array $param
     * @return Result
     * @throws \think\db\exception\DbException
     */
    public function page(array $param = []): Result
    {
        // 将传入的参数自动合并
        $param = $this->autoMergeParams($param);
        // 从参数中获取每页显示的数量，默认值为10
        $pageSize = getValueFromArray("page_size", $param, 10);
        // 从参数中获取关键字，默认值为空
        $keyword = getValueFromArray("keyword", $param);
        // 定义一个空数组，用于存放查询条件
        $where = [];
        // 如果关键字不为空，则添加查询条件
        if ($keyword) {
            $where[] = ["name|company", "like", "%" . $keyword . "%"];
        }
        // 查询数据库，按照id降序排序，分页显示
        $list = \app\common\model\LotteryActivity::where($where)->order("id desc")->paginate($pageSize);
        // 返回查询结果
        return Result::success($list);
    }

    /**
     * 保存活动
     * @param array $param
     * @return Result
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\DbException
     * @throws \think\db\exception\ModelNotFoundException
     */
    public function save(array $param = []): Result
    {
        $param = $this->autoMergeParams($param);
        $id = getValueFromArray("id", $param);

        if (!$id) {
            $model = new LotteryActivity(); // 如果id不存在，则创建新模型
        } else {
            $model = LotteryActivity::find($id); // 否则，根据id查找并获取模型
            if (!$model) {
                return Result::error("数据不存在");
            }
        }
        //按字段更新
        $res = $model->save($param);
        if (!$res) {
            return Result::error("保存失败");
        }
        return Result::success("保存成功");
    }

    /**
     * 获取活动详情
     * @param int $id
     * @return Result
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\DbException
     * @throws \think\db\exception\ModelNotFoundException
     */
    public function detail(int $id)
    {
        $model = LotteryActivity::find($id);
        if (!$model) {
            return Result::error("数据不存在");
        }
        return Result::success(["detail"=>$model]);
    }

    /**
     * 删除活动
     * @param int $id
     * @return Result
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\DbException
     * @throws \think\db\exception\ModelNotFoundException
     */
    public function delete(int $id)
    {
        $model = LotteryActivity::find($id);
        if (!$model) {
            return Result::error("数据不存在");
        }
        $res = $model->delete();
        if (!$res) {
            return Result::error("删除失败");
        }
        return Result::success("删除成功");
    }

}